import BaseModel from './BaseModel'
import API from '@/api/apis'
import { DateFormat } from 'yb-tool'
import Filters from "../../utils/filters";

/**
 * 封装模型
 */
class PackageModel extends BaseModel {
  // 构造方法
  constructor() {
    super()
    /**
     * 标题
     * @type {string}
     */
    this.name = ''
    /**
     * 创建时间
     * @type {Date}
     */
    this.date = new Date()
    /**
     * 时间字符串
     * @type {string}
     */
    this.dateStr = ''
    /**
     * 类型
     * @type {string}
     */
    this.type = ''
    /**
     * 内容
     * @type {string}
     */
    this.content = ''
    /**
     * 描述
     * @type {string}
     */
    this.describe = ''
    /**
     * 封面
     * @type {string}
     */
    this.cover = ''
    /**
     * 项目地址
     * @type {string}
     */
    this.url = ''

    /**
     * ====================== URL 相关 ====================================
     */
    /**
     * 获取详情数据的URL
     * @type {String}
     */
    this.detailUrl = API.package.detail
    /**
     * 删除数据的URL
     * @type {String}
     */
    this.removeUrl = API.package.remove
    /**
     * 添加数据的URL
     * @type {String}
     */
    this.addUrl = API.package.add
    /**
     * 更新数据的URL
     * @type {String}
     */
    this.updateUrl = API.package.update
    /**
     * 添到回收站的URL
     * @type {String}
     */
    this.dustbinPushUrl = API.package.dustbinPush
    /**
     * 回收站还原的URL
     * @type {String}
     */
    this.dustbinPopUrl = API.package.dustbinPop
    /**
     * 添加修改数据的KEY数组
     * @type {Array}
     */
    this.addOrUpdateKeyArr = ['name', 'type', 'content', 'describe', 'cover', 'url']
  }

  /* ----- 获取指定图片大小 -------*/
  /**
   * 手机端列表图片URL
   * @returns {*|string}
   */
  get mPackageListCover() {
    return Filters.imageFill(this.cover, 1.6, 1.6, 'rem')
  }

  /**
   * 手机端详情图片URL
   * @returns {*|*|string}
   */
  get mPackageDetailCover() {
    return Filters.imageLfit(this.cover, 7.5, 0, 'rem')
  }

  /**
   * PC端列表图片URL
   * @returns {*|string}
   */
  get pcPackageListCover() {
    return Filters.imageFill(this.cover, 100, 100)
  }

  /**
   * 数据拦截，设置数据
   * @param json
   */
  setDataWithJson(json) {
    super.setDataWithJson(json)
    this.dateStr = DateFormat(this.date)
  }
}

/**
 * 列表加载URL
 * @type {String}
 */
PackageModel.listUrl = API.package.all
/**
 * 不同类型的URL
 * @type {String}
 */
PackageModel.typesUrl = API.package.typeDistinct
/**
 * 获取所有回收站数据
 * @type {String}
 */
PackageModel.dustbinAllUrl = API.package.dustbinAll

export default PackageModel
